//package com.heima.user.service.impl;
//
//import com.heima.common.constants.user.UserRelationConstants;
//import com.heima.common.exception.CustException;
//import com.heima.model.common.dtos.ResponseResult;
//import com.heima.model.common.enums.AppHttpCodeEnum;
//import com.heima.model.threadlocal.AppThreadLocalUtils;
//import com.heima.model.user.dtos.UserRelationDto;
//import com.heima.model.user.pojos.ApUser;
//import com.heima.user.service.ApUserRelationService;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.data.redis.core.RedisTemplate;
//import org.springframework.stereotype.Service;
//
//@Service
//public class ApUserRelationServiceImpl1 implements ApUserRelationService {
//
//    @Autowired
//    RedisTemplate<String, String> redisTemplate;
//
//    @Override
//    public ResponseResult follow(UserRelationDto dto) {
//        //校验参数  apthorApUserId  必须登录  operation  0  1
//        if (dto.getAuthorApUserId() == null) {
//            return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID, "作者对应的userid不存在");
//        }
//        Short operation = dto.getOperation();
//        if (operation == null || (operation.intValue() != 0 && operation.intValue() != 1)) {
//            return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID, "关注类型错误");
//        }
//        ApUser user = AppThreadLocalUtils.getUser();
//        if (user == null) {
//            CustException.cust(AppHttpCodeEnum.NEED_LOGIN);
//        }
//
//        Integer loginId = user.getId();
//        Integer followId = dto.getAuthorApUserId();
//        //检验之前有没有关注
//        Double score = redisTemplate.opsForZSet()
//                .score(UserRelationConstants.FANS_LIST + loginId, String.valueOf(followId));
//        if (operation.intValue() == 0 && score != null) {
//            CustException.cust(AppHttpCodeEnum.DATA_EXIST, "您已经关注该作者了！");
//        }
//        try {
//            //开启redis的事务
//            redisTemplate.multi();
//            //判断operation的值是0还是1
//            if (operation.intValue() == 0) {
//                // 没有关注过  zadd  follow：我的id  作者的id
//                redisTemplate.opsForZSet()
//                        .add(UserRelationConstants.FOLLOW_LIST + loginId,
//                                String.valueOf(followId),
//                                System.currentTimeMillis());
//                //            zadd  fans：作者id  我的id
//                redisTemplate.opsForZSet()
//                        .add(UserRelationConstants.FANS_LIST + followId,
//                                String.valueOf(loginId),
//                                System.currentTimeMillis());
//            } else {
//                // 是1  取关
//                //                 我的id   作者id
//                redisTemplate.opsForZSet()
//                        .remove(UserRelationConstants.FOLLOW_LIST + loginId,
//                                String.valueOf(followId));
//                //                 作者id   我的id
//                redisTemplate.opsForZSet()
//                        .remove(UserRelationConstants.FANS_LIST + followId,
//                                String.valueOf(loginId));
//            }
//            //提交事务
//            redisTemplate.exec();
//        } catch (Exception e) {
//            e.printStackTrace();
//            redisTemplate.discard(); // 取消redis事务
//            throw e;
//        }
//        return ResponseResult.okResult();
//    }
//}
